tree view: clean up custom search entry on destroy
authorMatthias Clasen <mclasen@redhat.com>
Tue, 18 Feb 2014 02:41:11 +0000 (21:41 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 18 Feb 2014 02:41:11 +0000 (21:41 -0500)
Suprisingly, this bug has been there for a very long time.
I'm fixing it now because we now use a custom search entry
in the app chooser dialog, and this is causing the templates
cleanup test to fail.

gtk/gtktreeview.c

index 7bf95e7abd93b5eda4142ca57b76133d218092b3..968a1bf406b57951723b0e82a8f0ec642ffdff4d 100644 (file)
@@ -2092,6 +2092,21 @@ gtk_tree_view_destroy (GtkWidget *widget)
        }
     }
 
+  if (tree_view->priv->search_custom_entry_set)
+    {
+      g_signal_handlers_disconnect_by_func (tree_view->priv->search_entry,
+                                            G_CALLBACK (gtk_tree_view_search_init),
+                                            tree_view);
+      g_signal_handlers_disconnect_by_func (tree_view->priv->search_entry,
+                                            G_CALLBACK (gtk_tree_view_search_key_press_event),
+                                            tree_view);
+
+      g_object_unref (tree_view->priv->search_entry);
+
+      tree_view->priv->search_entry = NULL;
+      tree_view->priv->search_custom_entry_set = FALSE;
+    }
+
   if (tree_view->priv->search_destroy && tree_view->priv->search_user_data)
     {
       tree_view->priv->search_destroy (tree_view->priv->search_user_data);
@@ -14856,6 +14871,7 @@ gtk_tree_view_set_search_entry (GtkTreeView *tree_view,
       gtk_widget_destroy (tree_view->priv->search_window);
 
       tree_view->priv->search_window = NULL;
+      tree_view->priv->search_entry_changed_id = 0;
     }
 
   if (entry)